<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=402089
-->
<head>
  <title>Test for Bug 742376</title>
  <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
  <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>

<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=742376">Mozilla Bug 742376</a>
<script class="testbody" type="text/javascript">

/** Test for Bug 742376 **/

function hasListeners() {

  var Cc = SpecialPowers.Cc;
  var Ci = SpecialPowers.Ci;
  var dss = Cc["@mozilla.org/devicesensors;1"].getService(Ci.nsIDeviceSensors);

  return dss.hasWindowListener(Ci.nsIDeviceSensorData.TYPE_ORIENTATION, window) ||
         dss.hasWindowListener(Ci.nsIDeviceSensorData.TYPE_ROTATION_VECTOR, window) ||
         dss.hasWindowListener(Ci.nsIDeviceSensorData.TYPE_GAME_ROTATION_VECTOR, window);
}

is(hasListeners(), false, "Must not have listeners before tests start");

function dumbListener(event) {}
function dumbListener2(event) {}
function dumbListener3(event) {}

window.addEventListener("deviceorientation", dumbListener, false);
window.addEventListener("random_event_name", function() {}, false);
window.addEventListener("deviceorientation", dumbListener2, false);

is(hasListeners(), true, "Listeners should have been added");

window.setTimeout(function() {

  window.removeEventListener("deviceorientation", dumbListener, false);
  is(hasListeners(), true, "Only some listeners should have been removed");
  window.setTimeout(function() {

    window.removeEventListener("deviceorientation", dumbListener2, false);
    window.setTimeout(function() {
      is(hasListeners(), false, "Listeners should have been removed");
      testEventHandler();
    }, 0);
  }, 0);
}, 0);

function testEventHandler() {
  window.ondeviceorientation = function() {}
  window.setTimeout(function() {
    is(hasListeners(), true, "Handler should have been added");
    window.ondeviceorientation = null;
    window.setTimeout(function() {
      is(hasListeners(), false, "Handler should have been removed");
      SimpleTest.finish();
    }, 0);
  }, 0)
}

SimpleTest.waitForExplicitFinish();

</script>
</pre>
</body>
</html>

